Вопроса ошибок и их обхода мы уже касались в "Шаг 369 - Ошибки связанные с использование OCX". Это не я придумал - просто ежли приходится юзать осиксы то лучше их регистрить самой программой.
BOOL CFooApp::RegisterOCX(CString strName)
{
HMODULE hModule = LoadLibrary((LPCTSTR)strName);
CString strError;
if (hModule == NULL)
{
strError = "LoadLibrary " + strName + " failed!";
AfxMessageBox(strError);
return FALSE;
}
FARPROC fp = GetProcAddress(hModule, "DllRegisterServer");
if (fp == NULL)
{
strError = "Exported function DllRegisterServer not found!";
AfxMessageBox(strError);
return FALSE;
}
CoInitialize(NULL);
HRESULT hRes = fp();
if (SUCCEEDED(hRes))
{
return TRUE;
}
CoUninitialize();
return FALSE;
}
А в CFooApp::InitInstance() вставляем кусок кода:
if(!RegisterOCX("cfx32.ocx"))
{
AfxMessageBox("Какие то враги стерли cfx32.ocx");
return FALSE; // Опаньки, вообше не запускаемся пока кто-нибудь найдет нужные файлы
}
Шаг прислал Bulat.